package org.maiyodemo.ws;

import java.util.List;
import java.util.Map;

import javax.jws.WebService;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import org.maiyodemo.entity.Cat;
import org.maiyodemo.entity.User;
import org.maiyodemo.xmladapter.StringCatXmlAdapter;

/**
 * 对外发布的WebService主接口
 * 实际项目中WebService并不会实现业务逻辑
 * 它只是通过调用业务逻辑组件（如Service层）的方法来发布WebService
 * 
 * @author maiYo
 * 
 */
@WebService
public interface MaiyoWs {

	// 简单示例，由WebService接口自己实现
	String sayHi(String name);

	// 模拟真实开发下，调用服务层方法来暴露WebService接口
	List<Cat> getCatByUser(User user);
	
	// 在CXF开发中，遇到CXF无法自动处理的类型，需要自行处理
	// 处理思路是：使用javax.xml.bind.annotation.adapters.XmlAdapter.XmlAdapter类进行换转
	// 使用@XmlJavaTypeAdapter修饰CXF不能处理的类型
	// 使用该Annotation时，需要通过Value指定一个继承XmlAdapter抽象类的转换器
	@XmlJavaTypeAdapter(value = StringCatXmlAdapter.class)
	Map<String, Cat> getAllCats();
	
}
